package com.itheima.springbootwebbtalis.aspect;

import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.stereotype.Component;

import java.time.LocalDateTime;

// 1.定义类，定义方法，抽取公共的代码
@Component // 交给spring容器管理
@Aspect // 告知spring框架，前类是一个公共的代码
public class RecordTimeAspect {
    // 2.定义方法，抽取公共的代码
    @Around("execution(* com.itheima.springbootwebbtalis.service.Impl.*.*(..))")
    public Object recordTime(ProceedingJoinPoint pjp ) throws Throwable {
        // 公共代码获取开始时间
        LocalDateTime startTime = LocalDateTime.now();
        //调用目标方法
        Object result = pjp.proceed();
        //公共代码获取结束时间
        LocalDateTime endTime = LocalDateTime.now();
        //公共代码：统计时间
        String name = pjp.getSignature().getName();
        System.out.println("方法执行时间：" +name+":"+(endTime.getSecond() - startTime.getSecond()));
        return result;
    }
}
